通过 HTTP 与 Node-RED 进行配方切换
本教程向您展示如何使用简单的 HTTP 请求远程更改 OV20i 相机中的配方。您将构建一个系统,使网络中的任意设备都能即时在不同的检测设置之间切换——非常适合带有多种产品的生产线。
你将构建的系统: 远程配方切换系统,能够响应来自平板、计算机、PLC,或任何能够发送 Web 请求的设备的 HTTP 指令。
估计时间: 15-20 分钟
难度等级: 初学者
实际示例: 想象一个操作员在平板上扫描条码,摄像机会自动切换到该产品的正确配方——这正是我们要构建的系统!
为什么使用 HTTP 进行配方切换能够简化工作
OV20i 让远程配方切换变得简单:
-
- 任意设备都能触发 - 平板、PLC、计算机,甚至智能手机
-
- 即时切换 - 配方在不到一秒内切换
-
- 无需复杂设置 - 只需在 Node-RED 中放置少量节点
-
- 与现有系统兼容 - 与您已拥有的系统集成
非常适合: 多产品生产线、操作员控制面板、自动化系统,或任何需要快速配方切换的场景。
先决条件
在开始之前,请确保您已经具备:
- OV20i 相机已连接并正常工作
- 至少创建并准备好 2 个配方
- 通过 IO Block 访问 Node-RED
你需要 recipe ID 编号——这些编号在编辑配方时浏览器地址栏中可以找到。
Step 1: Find Your Recipe Numbers
1.1 获取 Recipe IDs
- 在 Recipe Editor 中打开任意一个配方
- 查看浏览器地址栏
- 找到
/recipe/
之后的数字(示例:/recipe/15
表示配方 ID 为 15) - 记录下你想在之间切换的所有配方的 ID
为什么要用这些数字? 每个配方都具有唯一且不变的 ID——摄像机内部就是用这个。
Step 2: Open Node-RED
2.1 访问 Flow Builder
- 在任意 Recipe Editor 中,点击“IO Block”
- 点击“Configure IO”
现在您已经进入 Node-RED,我们将在这里构建您的配方切换系统!
2.2 规划您的设置
下面是我们要构建的系统:
Button Click → Format Request → Send to Camera → See Result
简单! 摄像机内置的 Web 服务器监听配方切换请求。
Step 3: Build Your Recipe Switcher
3.1 添加基础节点
在画布上拖放以下四个节点:
- Inject(来自 Input 部分)- 您的“切换配方”按钮
- Function(来自 Function 部分)- 以正确的格式化请求
- HTTP Request(来自 Network 部分)- 发送命令到摄像机
- Debug(来自 Output 部分)- 显示是否成功
3.2 连接它们
按如下方式连线:
Inject → Function → HTTP Request → Debug
简单! 现在让我们配置每个节点。
Step 4: Configure Your Nodes
4.1 设置配方按钮
- 双击 Inject 节点
- 将名称改为“Switch to Recipe 15”(使用您实际的配方 ID)
- 将 Payload 设置为“15”(您的配方 ID 编号)
- 点击“Done”
4.2 设置请求格式化器
- 双击 Function 节点
- 将名称设为“Format Request”
- 复制下面这段简单代码:
// Get recipe number from button
let recipeID = msg.payload;
// Set up the web request
msg.headers = {'Content-Type': 'application/json'};
msg.payload = JSON.stringify({ id: recipeID });
return msg;
- 点击“Done”
作用: 将您的配方编号打包成摄像机期望的格式。
4.3 设置 HTTP 请求
- 双击 HTTP Request 节点
- 将 Method 设置为“POST”
- 将 URL 设置为
localhost:5001/pipeline/activate
- 命名为 “Change Recipe”
- 点击“Done”
在 18.92 版之前:使用 http://[CAMERA_IP]/edge/pipeline/activate
18.92 版及以上:使用 http://localhost:5001/pipeline/activate
4.4 设置响应监控
- 双击 Debug 节点
- 将名称设为“Recipe Change Result”
- 点击“Done”
完美! 您的配方切换器已就绪,可进行测试。
Step 5: Test Your Recipe Switcher
5.1 部署并试用
- 点击红色的“Deploy”按钮
- 点击您的 Inject 按钮(Switch to Recipe 15)
- 观察调试面板的响应
5.2 检查是否成功
成功迹象:
- 调试显示
"success": true
- 摄像头界面显示新配方名称
- 调试面板中无错误信息
如果成功: 恭喜!您已远程切换了配方。
如果没有: 请查看下面的故障排除部分。
5.3 增加更多配方按钮
需要多个配方? 只需再添加更多 Inject 节点:
- 配方 10 按钮: Payload = "10",Name = "Switch to Recipe 10"
- 配方 23 按钮: Payload = "23",Name = "Switch to Recipe 23"
- 全部连接到同一个 Function 节点
Step 6: Use from Other Devices
现在进入有趣的部分! 任何设备都可以通过向摄像机发送 Web 请求来切换配方。
6.1 来自任何网络浏览器
在网络中的任意浏览器输入以下内容:
http://192.168.0.100:5001/pipeline/activate
6.2 来自命令行
Windows/Mac/Linux - 将配方切换到 15:
curl -X POST http://192.168.0.100:5001/pipeline/activate \
-H "Content-Type: application/json" \
-d '{"id": "15"}'
6.3 来自 PLC 与其他系统
大多数现代系统都可以发送 HTTP 请求:
- Siemens PLCs: 使用 HTTP client 块
- Allen-Bradley: 使用 HTTP 指令块
- Python/C#/Java: 使用标准 HTTP 库
- 自定义应用: 任何编程语言均可
请求格式始终相同:
- 方法(Method): POST
- URL:
http://[CAMERA_IP]:5001/pipeline/activate
- Body:
{"id": "RECIPE_NUMBER"}
Step 7: Make It Even Better
7.1 添加配方验证
是否希望防止切换到不存在的配方? 修改您的 Function 节点:
let recipeID = msg.payload;
let validRecipes = ["10", "15", "20"]; // Your actual recipe IDs
if (!validRecipes.includes(recipeID)) {
msg.payload = "Invalid recipe: " + recipeID;
return null; // Don't send request
}
// Normal formatting continues...
7.2 产品代码映射
是否希望使用产品名称而不是数字? 尝试以下内容:
let productCodes = {
"BOLT_A": "10",
"BOLT_B": "15",
"SCREW_C": "20"
};
let recipeID = productCodes[msg.payload];
// Continue with formatting...
现在您可以使用产品名称来触发,而不是数字!
7.3 响应处理
是否需要更好的成功/错误信息? 在 HTTP Request 之后再添加一个 Function:
let response = JSON.parse(msg.payload);
if (response.success) {
msg.payload = "✓ Recipe changed successfully!";
} else {
msg.payload = "✗ Recipe change failed: " + response.error;
}
return msg;
Step 8: Quick Troubleshooting
不起作用?以下是最常见的修复方法:
问题 | 快速修复 |
---|---|
“未找到配方”错误 | 在 URL 中再次检查您的配方 ID 编号 |
完全无响应 | 验证摄像机 IP 地址和网络连接 |
“Parse error” 消息 | 检查 Function 节点代码是否正确复制 |
配方实际没有改变 | 确保配方存在且未损坏 |
仍然卡住? 请检查摄像机是否在线并且可从 Node-RED 访问。 |
您完成了!
恭喜! 您现在可以对 OV20i 摄像机进行远程配方控制。只需几次点击,您就构建了一个能够实现以下功能的系统:
- 从网络中的任意设备实现配方即时切换
- 与现有系统(如 PLC、平板或计算机)集成
- 通过简单的按钮点击支持多份配方
- 对请求进行校验以防止错误
- 使用标准网络技术与自定义应用程序协同工作
下一步怎么做?
简易下一步
- 为所有产品添加更多配方按钮
- 从不同设备(如平板或手机)进行测试
- 创建自定义产品映射以便更易操作
高级想法
- 构建带配方选择按钮的操作者仪表板
- 连接条码扫描仪以实现自动配方选择
- 与 MES 系统集成以实现生产线协同
- 添加日志记录以跟踪各配方的使用时机
真实世界的示例
以下是其他场景如何使用 HTTP 配方切换:
- 食品包装:条码扫描仪触发不同包装尺寸的配方切换
- 汽车制造:PLC 根据生产线下游的部件类型切换配方
- 电子行业:带配方按钮的操作员平板用于不同的电路板
- 质量控制:基于生产计划的自动配方切换
可能性是无穷的——这一切都始于您刚刚构建的这个简单系统!